//package com.example.demo;
//
//import java.net.*;
//import java.nio.*;
//import java.nio.channels.*;
//import java.util.*;
//import java.util.concurrent.*;
//
//public class HttpServer {
//    private static final int PORT = 8080; // 设置服务器监听的端口号
//
//    public static void main(String[] args) throws Exception {
//        ExecutorService executorService = Executors.newFixedThreadPool(10); // 创建线程池
//
//        try (Selector selector = Selector.open();
//             ServerSocketChannel serverSocketChannel = ServerSocketChannel.open()) {
//            serverSocketChannel.bind(new InetSocketAddress(PORT)); // 将服务器socket通道绑定到指定的IP地址和端口上
//            serverSocketChannel.configureBlocking(false); // 配置为非阻塞模式
//
//            while (!Thread.interrupted()) {
//                SelectionKey key = null;
//
//                if ((key = serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT)) == null || !key.isValid()){
//                    continue;
//                }
//
//                if (key.isAcceptable()) {
//                    SocketChannel clientSocketChannel = serverSocketChannel.accept().get(); // 接收客户端连接并返回对应的SocketChannel
//                    clientSocketChannel.configureBlocking(false); // 配置为非阻塞模式
//
//                    ByteBuffer buffer = ByteBuffer.allocateDirect(4 * 1024); // 分配直接内存作为读取数据的缓冲区
//                    clientSocketChannel.read(buffer).addListener((CompletionHandler<Integer>) (result, exception) -> {
//                        if (exception != null) {
//                            System.out.println("Error reading data from the channel");
//                            return;
//                        }
//
//                        String requestData = new String(Arrays.copyOfRange(buffer.array(), 0, result.intValue()));
//                        System.out.println("Received Request:\n" + requestData);
//
//                        // 处理请求...
//
//                        // 发送响应...
//                    });
//                }
//
//                selector.selectNow(); // 立即选择就绪的事件进行处理
//            }
//        } finally {
//            executorService.shutdown(); // 关闭线程池
//        }
//    }
//}
